package com.lj.common.utils.qywx.builder;

import cn.hutool.core.util.StrUtil;
import com.lj.common.exception.CommonException;
import lombok.NoArgsConstructor;

import java.nio.charset.StandardCharsets;
import java.util.List;

/**
 * @author luojing
 * @date 2025/3/22
 */
public class TextBuilder extends AbstractMsgBuilder {

    /**
     * 艾特所有人
     */
    public static final String AT_ALL = "@all";

    private TextBuilder() {
    }

    /**
     * @param content 文本内容，最长不超过2048个字节，必须是utf8编码
     */
    public static TextBuilder builder(String content) {
        if (StrUtil.isBlank(content)) {
            throw new CommonException("文本类型消息 content参数不能为空");
        }
        byte[] bytes = content.getBytes(StandardCharsets.UTF_8);
        if (bytes.length > 2048) {
            throw new CommonException("文本类型消息 content最长不超过2048个字节");
        }
        TextBuilder textBuilder = new TextBuilder();
        textBuilder.builder.put("content", content);
        return textBuilder;
    }

    /**
     * userid的列表，提醒群中的指定成员(@某个成员)，@all表示提醒所有人，
     * 如果开发者获取不到userid，可以使用mentioned_mobile_list
     */
    public TextBuilder mentionedList(List<String> mentionedList) {
        builder.put("mentioned_list", mentionedList);
        return this;
    }

    /**
     * 手机号列表，提醒手机号对应的群成员(@某个成员)，@all表示提醒所有人
     */
    public TextBuilder mentionedMobileList(List<String> mentionedMobileList) {
        builder.put("mentioned_mobile_list", mentionedMobileList);
        return this;
    }


}
